package com.sgy.zkclient;

import org.I0Itec.zkclient.IZkChildListener;
import org.I0Itec.zkclient.ZkClient;

import java.util.List;

public class GetNoteChildren {

    /*
    * 借助zkclient完成会话的创建
    * */
    public static void main(String[] args) throws InterruptedException {
        /*
        * zkclient通过对zookeeperAPI内部封装，将异步创建会话过程同步化
        * */
        ZkClient zkClient = new ZkClient("192.168.201.129:2181");
        System.out.println("会话已创建...");

        // 获取子节点列表
        List<String> children = zkClient.getChildren("/zkclient");
        System.out.println(children);

        // 注册监听事件
        /*
        * 客户端可以对一个不存在的节点进行子节点的变更监听
        * 只要该节点的子节点列表发生变化或者该节点本身被创建或者删除，都会触发监听
        * */
        zkClient.subscribeChildChanges("/zkclient_get", new IZkChildListener() {
            /*
            * s：parentPath
            * list：变换后的子节点列表
            * */
            @Override
            public void handleChildChange(String s, List<String> list) throws Exception {
                System.out.println(s + "的子节点列表发生变化，变换后的子节点列表为：" + list);
            }
        });

        zkClient.createPersistent("/zkclient_get");
        Thread.sleep(1000);

        zkClient.createPersistent("/zkclient_get/c1");
        Thread.sleep(1000);
    }
}
